/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.view;

import com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.its.dsw2.biblioteca.bl.DetallePrestamoBlLocal;
import mx.its.dsw2.biblioteca.bl.LibroBlLocal;
import mx.its.dsw2.biblioteca.bl.PrestamoBlLocal;
import mx.its.dsw2.biblioteca.bl.UsuarioBlLocal;
import mx.its.dsw2.biblioteca.modelo.DetallePrestamo;
import mx.its.dsw2.biblioteca.modelo.Libro;
import mx.its.dsw2.biblioteca.modelo.Prestamo;
import mx.its.dsw2.biblioteca.modelo.Usuario;

/**
 *
 * @author 100101
 */
@ManagedBean
@SessionScoped
public class PrestamoBean {
    @EJB
    private DetallePrestamoBlLocal detallePrestamoBl;
    @EJB
    private UsuarioBlLocal usuarioBl;
    @EJB
    private LibroBlLocal libroBl;
    @EJB
    private PrestamoBlLocal prestamoBl;
    
    
private List<Prestamo> lista;
private List<Libro> listaLibros;
private List<DetallePrestamo> listaDetallesP;
    /**
     * Creates a new instance of PrestamoBean
     */
private Prestamo prestamo;
private int idUsuarioSeleccionado;
private String claveLibro;
private boolean visible=false;
private Usuario user;
private String accion="";
private boolean mostrar=false;

    public PrestamoBean() {
        prestamo=new Prestamo();
        listaLibros=new ArrayList<Libro>();
                
    }

    public boolean isMostrar() {
        return mostrar;
    }

    public void setMostrar(boolean mostrar) {
        this.mostrar = mostrar;
    }

    public List<DetallePrestamo> getListaDetallesP() {
        return listaDetallesP;
    }
    
    

    public List<Prestamo> getLista() {
        lista=prestamoBl.getAll();
        return lista;
    }

    public List<Libro> getListaLibros() {
        return listaLibros;
    }

    public String getClaveLibro() {
        return claveLibro;
    }

    public void setClaveLibro(String claveLibro) {
        this.claveLibro = claveLibro;
    }

    public boolean isVisible() {
        return visible;
    }

    public Usuario getUser() {
        return user;
    }

    public void setUser(Usuario user) {
        this.user = user;
    }
    
    

    public void setVisible(boolean visible) {
        this.visible = visible;
    }
    
    

    public int getIdUsuarioSeleccionado() {
        return idUsuarioSeleccionado;
    }

    public void setIdUsuarioSeleccionado(int idUsuarioSeleccionado) {
        this.idUsuarioSeleccionado = idUsuarioSeleccionado;
    }
    
    

    public Prestamo getPrestamo() {
        return prestamo;
    }

    public void setPrestamo(Prestamo prestamo) {
        this.prestamo = prestamo;
    }
    
    public void agregarLibro(ActionEvent evt){
        Libro l=libroBl.findBookForLend(claveLibro);
        if(l!=null&&!listaLibros.contains(l)){
            listaLibros.add(l);
        }
    }
    
    public void mostrarContenido(ActionEvent evt){
        visible=true;
        user=usuarioBl.getUserById(idUsuarioSeleccionado);
    }
    
    public void eliminarLibroDeLista(ActionEvent evt){//createedit
//      accion="Eliminar2";
               int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
//       category=listCategory.get(index);  
       listaLibros.remove(index);
       
   }
    
     public void prepararNuevo(ActionEvent evt){
        accion="Nuevo";
        mostrar=false;
        prestamo=new Prestamo();
        visible=false;
        claveLibro="";

        listaLibros=new ArrayList<Libro>();
    }
    
    public void prepararEditar(ActionEvent evt){
        accion="Editar";
        mostrar=false;
        claveLibro="";
        int index=Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        prestamo=lista.get(index);
//        listaLibros=libroBl.getListByLend(prestamo);
    }
    
    public String mostrarDetalles(){
        mostrar=true;
        listaDetallesP=detallePrestamoBl.getListDetailByLend(prestamo);
        return "PrestamoLista";
    }
    
     public String accionAceptar(){
         if(!listaLibros.isEmpty()){
       prestamo.setIdUsuario(usuarioBl.getUserById(idUsuarioSeleccionado));
       return "PrestamoConfirmar";
         }else{
             return "PrestamoCrearEditar";
         }
   }
    
    public String procesarAccion(){
        if(accion.equalsIgnoreCase("Nuevo")){
            prestamoBl.register(prestamo,listaLibros);  
        }else{
            if(accion.equalsIgnoreCase("Editar")){
//                prestamoBl.
            }
        }
        accion="";
        return "PrestamoLista";
    }
    
    public String llamadaPaginas(){
         String link="";
         if(accion.equalsIgnoreCase("Editar")||accion.equalsIgnoreCase("Nuevo")){
             link="PrestamoCrearEditar";
         }else{
             if(accion.equalsIgnoreCase("Eliminar")){
                 link="PrestamoLista";
             }
             }
         
         return link;
     }
    
    public String ocultar(){
        mostrar=false;
        return  "PrestamoLista";
    }
}
